package com.nicolas.pattern.observer;

/**
 *  ConcreteObserver（具体观察者）：在具体观察者中维护一个指向具体目标对象的引用，它存储具体观察者的有关状态，
 *  这些状态需要和具体目标的状态保持一致；它实现了在抽象观察者Observer中定义的update()方法。
 *  通常在实现时，可以调用具体目标类的attach()方法将自己添加到目标类的集合中或通过detach()方法将自己从目标类的集合中删除。
 * @author cuilj --2017年2月13日 下午5:01:06
 *
 */
public class Player  implements Observer {  
    private String name;  
  
    public Player(String name) {  
        this.name = name;  
    }  
      
    public void setName(String name) {  
        this.name = name;  
    }  
      
    public String getName() {  
        return this.name;  
    }  
      
    //支援盟友方法的实现  
    public void help() {  
        System.out.println("坚持住，" + this.name + "来救你！");  
    }  
      
    //遭受攻击方法的实现，当遭受攻击时将调用战队控制中心类的通知方法notifyObserver()来通知盟友  
    public void beAttacked(AllyControlCenter acc) {  
        System.out.println(this.name + "被攻击！");  
        acc.notifyObserver(name);         
    }  
}
